Software complexity is increasing which results in changes in product cycles, requirements and modes for delivering software applications. Software applications can adopt or get access to different services and capabilities from other software offerings. For example, they may consume resources and functionality provided by computing platforms, such as on-premise platforms or cloud platforms.
Cloud computing is the delivery of computing resources as a service over a network (e.g., the Internet). Software-as-a-Service (SaaS) is a type of a solution, where a cloud service provider allows software applications and various hardware and software resources on-demand when requested by an end user (e.g., customer). SaaS delivery refers to providing hosted software applications to customers and end users in a cloud-computing environment. Platform-as-a-Service (PaaS) is another category of cloud computing solutions that may give application developers the tools to design, develop, test, deploy and host their software applications, as well as use of platform services and infrastructure. PaaS is a growing technology space offering possibilities for optimization of information technology (IT) spending. It provides facilities required to support the lifecycle of web applications and services, available from the Internet. Applications can run as a SaaS on the infrastructure that is provided from a PaaS provider.
Applications running as on-demand or on-premise solutions perform operations on the underlying infrastructure while consuming provided resource of either a cloud or an on-premise platform. Scaling of the applications to respond to customers' demands is related to efficiency and capacity provided by the underlying infrastructure and consumed platform services. The underlying infrastructure provides resources so that users may utilize them during execution of the applications on the development platform in an acceptable manner.